#ifndef HISTREAMER_LOG_ADAPTER_H
#define HISTREAMER_LOG_ADAPTER_H

inline std::string MediaGetFileName(const std::string& file)
{
    if (file == "") {
        return "Unknown File";
    }

    return file.substr(file.find_last_of("/\\") + 1);
}

#define MEDIA_LOG_MESSAGE(level, msg, ...)                                                                             \
    do {                                                                                                               \
        printf("%lu " HST_LOG_TAG " " level " (%s, %d) : Func(%s) " msg "\n", pthread_self(),                          \
            MediaGetFileName(std::string(__FILE__)).c_str(), __LINE__,  __FUNCTION__, ##__VA_ARGS__);                  \
        fflush(stdout);                                                                                                \
    } while (0)

#define MEDIA_LOG_E(msg, ...) MEDIA_LOG_MESSAGE("ERROR", msg, ##__VA_ARGS__)
#define MEDIA_LOG_W(msg, ...) MEDIA_LOG_MESSAGE("WARN", msg, ##__VA_ARGS__)
#define MEDIA_LOG_I(msg, ...) MEDIA_LOG_MESSAGE("INFO", msg, ##__VA_ARGS__)
#define MEDIA_LOG_D(msg, ...) MEDIA_LOG_MESSAGE("DEBUG", msg, ##__VA_ARGS__)


#endif
